[INFO] fetching crate libautomotive 0.1.2...
[INFO] testing libautomotive-0.1.2 against master#1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 for pr-154065-1
[INFO] extracting crate libautomotive 0.1.2 into /workspace/builds/worker-3-tc1/source
[INFO] started tweaking crates.io crate libautomotive 0.1.2
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate libautomotive 0.1.2
[INFO] tweaked toml for crates.io crate libautomotive 0.1.2 written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate libautomotive 0.1.2 on toolchain 1f7f8ea0721a3b1eb73e6c6d25cccb371434b320
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate libautomotive 0.1.2 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ca8e6907137af24f2085e3bfe29d9fc08c14aee91ea121efb7f06640d2fd802f
[INFO] running `Command { std: "docker" "start" "-a" "ca8e6907137af24f2085e3bfe29d9fc08c14aee91ea121efb7f06640d2fd802f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ca8e6907137af24f2085e3bfe29d9fc08c14aee91ea121efb7f06640d2fd802f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ca8e6907137af24f2085e3bfe29d9fc08c14aee91ea121efb7f06640d2fd802f", kill_on_drop: false }`
[INFO] [stdout] ca8e6907137af24f2085e3bfe29d9fc08c14aee91ea121efb7f06640d2fd802f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 676c0631baf64d661ecc9de8d556c0766c232eb159d4ebbc00c87c7e91ab63f0
[INFO] running `Command { std: "docker" "start" "-a" "676c0631baf64d661ecc9de8d556c0766c232eb159d4ebbc00c87c7e91ab63f0", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.9.0
[INFO] [stderr]    Compiling libautomotive v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `AutomotiveError`
[INFO] [stdout]   --> src/physical/mod.rs:41:20
[INFO] [stdout]    |
[INFO] [stdout] 41 | use crate::error::{AutomotiveError, Result};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]  --> src/transport/doip.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{SocketAddr, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/transport/isobus_diagnostic.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/transport/lin.rs:263:5
[INFO] [stdout]     |
[INFO] [stdout] 263 |     (!sum as u8)
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 263 -     (!sum as u8)
[INFO] [stdout] 263 +     !sum as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/transport/lin.rs:274:5
[INFO] [stdout]     |
[INFO] [stdout] 274 |     (!sum as u8)
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -     (!sum as u8)
[INFO] [stdout] 274 +     !sum as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/application/uds.rs:427:12
[INFO] [stdout]     |
[INFO] [stdout] 427 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/transport/doip.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 179 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/doip.rs:212:21
[INFO] [stdout]     |
[INFO] [stdout] 212 |         if let Some(mut stream) = self.stream.take() {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut frame = Frame {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:171:21
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 let mut cts_frame = Frame {
[INFO] [stdout]     |                     ----^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:222:25
[INFO] [stdout]     |
[INFO] [stdout] 222 |                     let mut ack_frame = Frame {
[INFO] [stdout]     |                         ----^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:334:17
[INFO] [stdout]     |
[INFO] [stdout] 334 |             let mut rts_frame = Frame {
[INFO] [stdout]     |                 ----^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout_ms`
[INFO] [stdout]    --> src/transport/lin.rs:154:37
[INFO] [stdout]     |
[INFO] [stdout] 154 |     pub fn read_response(&mut self, timeout_ms: u32) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]    --> src/application/obdii.rs:296:5
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct Obd<T: TransportLayer> {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] 296 |     config: ObdConfig,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `handling_session_timing` is never read
[INFO] [stdout]    --> src/application/uds.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct Uds<T: TransportLayer> {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 138 |     handling_session_timing: bool, // Flag to prevent recursive session timing handling
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `handle_session_timing` is never used
[INFO] [stdout]    --> src/application/uds.rs:397:8
[INFO] [stdout]     |
[INFO] [stdout] 141 | impl<T: TransportLayer> Uds<T> {
[INFO] [stdout]     | ------------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 397 |     fn handle_session_timing(&mut self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_REQUEST` is never used
[INFO] [stdout]  --> src/network/j1939.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const PGN_REQUEST: u32 = 0xEA00;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tail` is never read
[INFO] [stdout]   --> src/physical/can.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct RxQueue {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     tail: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `push` is never used
[INFO] [stdout]    --> src/physical/can.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl RxQueue {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tail` is never read
[INFO] [stdout]   --> src/physical/canfd.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct RxQueue {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     tail: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `head` is never read
[INFO] [stdout]   --> src/physical/canfd.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct TxEventQueue {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] 71 |     events: Vec<TxEvent>,
[INFO] [stdout] 72 |     head: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TxEventQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `push` is never used
[INFO] [stdout]    --> src/physical/canfd.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl RxQueue {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pop` is never used
[INFO] [stdout]    --> src/physical/canfd.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl TxEventQueue {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 212 |     fn pop(&mut self) -> Option<TxEvent> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOIP_VEHICLE_IDENTIFICATION_REQUEST` is never used
[INFO] [stdout]   --> src/transport/doip.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DOIP_VEHICLE_IDENTIFICATION_REQUEST: u16 = 0x0001;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOIP_VEHICLE_IDENTIFICATION_RESPONSE` is never used
[INFO] [stdout]   --> src/transport/doip.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DOIP_VEHICLE_IDENTIFICATION_RESPONSE: u16 = 0x0002;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `physical` is never read
[INFO] [stdout]    --> src/transport/doip.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct DoIP<P: PhysicalLayer> {
[INFO] [stdout]     |            ---- field in this struct
[INFO] [stdout] 111 |     config: DoIPConfig,
[INFO] [stdout] 112 |     physical: P,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ISOBUS_PROTOCOL_VERSION` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const ISOBUS_PROTOCOL_VERSION: u8 = 0x03;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_REQUEST` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const PGN_REQUEST: u32 = 0x00EA00;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_TRANSPORT_PROTOCOL_DATA` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const PGN_TRANSPORT_PROTOCOL_DATA: u32 = 0x00EB00;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_DIAGNOSTIC_MESSAGE` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const PGN_DIAGNOSTIC_MESSAGE: u32 = 0x00FECA;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_CTS` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const TP_CM_CTS: u8 = 0x11; // Clear to Send
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_EndOfMsgACK` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_BAM` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const TP_CM_BAM: u8 = 0x20; // Broadcast Announce Message
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_ABORT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const TP_CM_ABORT: u8 = 0xFF; // Connection Abort
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T1_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const T1_TIMEOUT: u32 = 750; // Time between CTS and first data packet
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T2_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const T2_TIMEOUT: u32 = 1250; // Time between consecutive data packets
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T3_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const T3_TIMEOUT: u32 = 1250; // Time between last data packet and EndOfMsgACK
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T4_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const T4_TIMEOUT: u32 = 1050; // Time waiting for CTS
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Idle`, `SendingData`, `WaitingForEndOfMsgACK`, and `ReceivingData` are never constructed
[INFO] [stdout]   --> src/transport/isobus.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | enum TPSessionState {
[INFO] [stdout]    |      -------------- variants in this enum
[INFO] [stdout] 74 |     Idle,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     WaitingForCTS,
[INFO] [stdout] 76 |     SendingData,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 77 |     WaitingForEndOfMsgACK,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     ReceivingData,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TPSessionState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/transport/isobus.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | struct TPSession {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 84 |     state: TPSessionState,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 85 |     total_size: u16,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 86 |     total_packets: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 87 |     next_packet: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 88 |     data: Vec<u8>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 89 |     source_address: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 90 |     destination_address: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pgn: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 92 |     last_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TPSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rx_buffer` is never read
[INFO] [stdout]    --> src/transport/isobus.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct ISOBUS {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 100 |     rx_buffer: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_transport_protocol`, `handle_tp_connection`, `handle_tp_data`, and `handle_diagnostic_message` are never used
[INFO] [stdout]    --> src/transport/isobus.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl ISOBUS {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn handle_transport_protocol(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn handle_tp_connection(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     fn handle_tp_data(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn handle_diagnostic_message(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_DM2` is never used
[INFO] [stdout]  --> src/transport/isobus_diagnostic.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const PGN_DM2: u32 = 0x00FECB; // DM2: Previously Active Diagnostic Trouble Codes
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lamp_status` is never read
[INFO] [stdout]   --> src/transport/isobus_diagnostic.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DiagnosticTroubleCode {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     lamp_status: LampStatus, // Status of the Malfunction Indicator Lamp
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiagnosticTroubleCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const SF_PCI: u8 = 0x00; // Single Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const FF_PCI: u8 = 0x10; // First Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CF_PCI: u8 = 0x20; // Consecutive Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FC_PCI` is never used
[INFO] [stdout]   --> src/transport/isotp.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const FC_PCI: u8 = 0x30; // Flow Control
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Break`, `Sync`, `Id`, `Data`, and `Checksum` are never constructed
[INFO] [stdout]   --> src/transport/lin.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | enum LinState {
[INFO] [stdout]    |      -------- variants in this enum
[INFO] [stdout] 23 |     Idle,
[INFO] [stdout] 24 |     Break,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 25 |     Sync,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Id,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 27 |     Data,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 28 |     Checksum,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LinState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state` is never read
[INFO] [stdout]   --> src/transport/lin.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct Lin<P: PhysicalLayer> {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     state: LinState,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stdout]   --> src/transport/isobus.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 22 - const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout] 22 + const TP_CM_END_OF_MSG_ACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stdout]    --> src/transport/isobus.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TP_CM_EndOfMsgACK => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TP_CM_END_OF_MSG_ACK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.34s
[INFO] running `Command { std: "docker" "inspect" "676c0631baf64d661ecc9de8d556c0766c232eb159d4ebbc00c87c7e91ab63f0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "676c0631baf64d661ecc9de8d556c0766c232eb159d4ebbc00c87c7e91ab63f0", kill_on_drop: false }`
[INFO] [stdout] 676c0631baf64d661ecc9de8d556c0766c232eb159d4ebbc00c87c7e91ab63f0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3fbca38d3094c13fe92f471872cd9e616972c87a4569bc34e79b17ae9e81e4fe
[INFO] running `Command { std: "docker" "start" "-a" "3fbca38d3094c13fe92f471872cd9e616972c87a4569bc34e79b17ae9e81e4fe", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `AutomotiveError`
[INFO] [stdout]   --> src/physical/mod.rs:41:20
[INFO] [stdout]    |
[INFO] [stdout] 41 | use crate::error::{AutomotiveError, Result};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]  --> src/transport/doip.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{SocketAddr, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/transport/isobus_diagnostic.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/transport/lin.rs:263:5
[INFO] [stdout]     |
[INFO] [stdout] 263 |     (!sum as u8)
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 263 -     (!sum as u8)
[INFO] [stdout] 263 +     !sum as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/transport/lin.rs:274:5
[INFO] [stdout]     |
[INFO] [stdout] 274 |     (!sum as u8)
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -     (!sum as u8)
[INFO] [stdout] 274 +     !sum as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/application/uds.rs:427:12
[INFO] [stdout]     |
[INFO] [stdout] 427 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/transport/doip.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 179 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/doip.rs:212:21
[INFO] [stdout]     |
[INFO] [stdout] 212 |         if let Some(mut stream) = self.stream.take() {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut frame = Frame {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:171:21
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 let mut cts_frame = Frame {
[INFO] [stdout]     |                     ----^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:222:25
[INFO] [stdout]     |
[INFO] [stdout] 222 |                     let mut ack_frame = Frame {
[INFO] [stdout]     |                         ----^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:334:17
[INFO] [stdout]     |
[INFO] [stdout] 334 |             let mut rts_frame = Frame {
[INFO] [stdout]     |                 ----^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout_ms`
[INFO] [stdout]    --> src/transport/lin.rs:154:37
[INFO] [stdout]     |
[INFO] [stdout] 154 |     pub fn read_response(&mut self, timeout_ms: u32) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]    --> src/application/obdii.rs:296:5
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct Obd<T: TransportLayer> {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] 296 |     config: ObdConfig,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `handling_session_timing` is never read
[INFO] [stdout]    --> src/application/uds.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct Uds<T: TransportLayer> {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 138 |     handling_session_timing: bool, // Flag to prevent recursive session timing handling
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `handle_session_timing` is never used
[INFO] [stdout]    --> src/application/uds.rs:397:8
[INFO] [stdout]     |
[INFO] [stdout] 141 | impl<T: TransportLayer> Uds<T> {
[INFO] [stdout]     | ------------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 397 |     fn handle_session_timing(&mut self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_REQUEST` is never used
[INFO] [stdout]  --> src/network/j1939.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const PGN_REQUEST: u32 = 0xEA00;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tail` is never read
[INFO] [stdout]   --> src/physical/can.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct RxQueue {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     tail: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `push` is never used
[INFO] [stdout]    --> src/physical/can.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl RxQueue {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tail` is never read
[INFO] [stdout]   --> src/physical/canfd.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct RxQueue {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     tail: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `head` is never read
[INFO] [stdout]   --> src/physical/canfd.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct TxEventQueue {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] 71 |     events: Vec<TxEvent>,
[INFO] [stdout] 72 |     head: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TxEventQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `push` is never used
[INFO] [stdout]    --> src/physical/canfd.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl RxQueue {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pop` is never used
[INFO] [stdout]    --> src/physical/canfd.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl TxEventQueue {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 212 |     fn pop(&mut self) -> Option<TxEvent> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOIP_VEHICLE_IDENTIFICATION_REQUEST` is never used
[INFO] [stdout]   --> src/transport/doip.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DOIP_VEHICLE_IDENTIFICATION_REQUEST: u16 = 0x0001;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOIP_VEHICLE_IDENTIFICATION_RESPONSE` is never used
[INFO] [stdout]   --> src/transport/doip.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DOIP_VEHICLE_IDENTIFICATION_RESPONSE: u16 = 0x0002;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `physical` is never read
[INFO] [stdout]    --> src/transport/doip.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct DoIP<P: PhysicalLayer> {
[INFO] [stdout]     |            ---- field in this struct
[INFO] [stdout] 111 |     config: DoIPConfig,
[INFO] [stdout] 112 |     physical: P,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ISOBUS_PROTOCOL_VERSION` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const ISOBUS_PROTOCOL_VERSION: u8 = 0x03;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_REQUEST` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const PGN_REQUEST: u32 = 0x00EA00;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_TRANSPORT_PROTOCOL_DATA` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const PGN_TRANSPORT_PROTOCOL_DATA: u32 = 0x00EB00;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_DIAGNOSTIC_MESSAGE` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const PGN_DIAGNOSTIC_MESSAGE: u32 = 0x00FECA;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_CTS` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const TP_CM_CTS: u8 = 0x11; // Clear to Send
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_EndOfMsgACK` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_BAM` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const TP_CM_BAM: u8 = 0x20; // Broadcast Announce Message
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_ABORT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const TP_CM_ABORT: u8 = 0xFF; // Connection Abort
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling libautomotive v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: constant `T1_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const T1_TIMEOUT: u32 = 750; // Time between CTS and first data packet
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T2_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const T2_TIMEOUT: u32 = 1250; // Time between consecutive data packets
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T3_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const T3_TIMEOUT: u32 = 1250; // Time between last data packet and EndOfMsgACK
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T4_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const T4_TIMEOUT: u32 = 1050; // Time waiting for CTS
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Idle`, `SendingData`, `WaitingForEndOfMsgACK`, and `ReceivingData` are never constructed
[INFO] [stdout]   --> src/transport/isobus.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | enum TPSessionState {
[INFO] [stdout]    |      -------------- variants in this enum
[INFO] [stdout] 74 |     Idle,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     WaitingForCTS,
[INFO] [stdout] 76 |     SendingData,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 77 |     WaitingForEndOfMsgACK,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     ReceivingData,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TPSessionState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/transport/isobus.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | struct TPSession {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 84 |     state: TPSessionState,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 85 |     total_size: u16,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 86 |     total_packets: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 87 |     next_packet: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 88 |     data: Vec<u8>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 89 |     source_address: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 90 |     destination_address: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pgn: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 92 |     last_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TPSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rx_buffer` is never read
[INFO] [stdout]    --> src/transport/isobus.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct ISOBUS {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 100 |     rx_buffer: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_transport_protocol`, `handle_tp_connection`, `handle_tp_data`, and `handle_diagnostic_message` are never used
[INFO] [stdout]    --> src/transport/isobus.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl ISOBUS {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn handle_transport_protocol(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn handle_tp_connection(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     fn handle_tp_data(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn handle_diagnostic_message(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_DM2` is never used
[INFO] [stdout]  --> src/transport/isobus_diagnostic.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const PGN_DM2: u32 = 0x00FECB; // DM2: Previously Active Diagnostic Trouble Codes
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lamp_status` is never read
[INFO] [stdout]   --> src/transport/isobus_diagnostic.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DiagnosticTroubleCode {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     lamp_status: LampStatus, // Status of the Malfunction Indicator Lamp
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiagnosticTroubleCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const SF_PCI: u8 = 0x00; // Single Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const FF_PCI: u8 = 0x10; // First Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CF_PCI: u8 = 0x20; // Consecutive Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FC_PCI` is never used
[INFO] [stdout]   --> src/transport/isotp.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const FC_PCI: u8 = 0x30; // Flow Control
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Break`, `Sync`, `Id`, `Data`, and `Checksum` are never constructed
[INFO] [stdout]   --> src/transport/lin.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | enum LinState {
[INFO] [stdout]    |      -------- variants in this enum
[INFO] [stdout] 23 |     Idle,
[INFO] [stdout] 24 |     Break,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 25 |     Sync,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Id,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 27 |     Data,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 28 |     Checksum,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LinState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state` is never read
[INFO] [stdout]   --> src/transport/lin.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct Lin<P: PhysicalLayer> {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     state: LinState,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stdout]   --> src/transport/isobus.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 22 - const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout] 22 + const TP_CM_END_OF_MSG_ACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stdout]    --> src/transport/isobus.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TP_CM_EndOfMsgACK => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TP_CM_END_OF_MSG_ACK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AutomotiveError`
[INFO] [stdout]   --> src/physical/mod.rs:41:20
[INFO] [stdout]    |
[INFO] [stdout] 41 | use crate::error::{AutomotiveError, Result};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]  --> src/transport/doip.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::net::{SocketAddr, TcpStream};
[INFO] [stdout]   |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/transport/isobus_diagnostic.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/transport/lin.rs:263:5
[INFO] [stdout]     |
[INFO] [stdout] 263 |     (!sum as u8)
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 263 -     (!sum as u8)
[INFO] [stdout] 263 +     !sum as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/transport/lin.rs:274:5
[INFO] [stdout]     |
[INFO] [stdout] 274 |     (!sum as u8)
[INFO] [stdout]     |     ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -     (!sum as u8)
[INFO] [stdout] 274 +     !sum as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicU32` and `Ordering`
[INFO] [stdout]  --> src/transport/tests.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::atomic::{AtomicU32, Ordering};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/transport/tests.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/application/uds.rs:427:12
[INFO] [stdout]     |
[INFO] [stdout] 427 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/transport/doip.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 179 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/doip.rs:212:21
[INFO] [stdout]     |
[INFO] [stdout] 212 |         if let Some(mut stream) = self.stream.take() {
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut frame = Frame {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:171:21
[INFO] [stdout]     |
[INFO] [stdout] 171 |                 let mut cts_frame = Frame {
[INFO] [stdout]     |                     ----^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:222:25
[INFO] [stdout]     |
[INFO] [stdout] 222 |                     let mut ack_frame = Frame {
[INFO] [stdout]     |                         ----^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/isobus.rs:334:17
[INFO] [stdout]     |
[INFO] [stdout] 334 |             let mut rts_frame = Frame {
[INFO] [stdout]     |                 ----^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout_ms`
[INFO] [stdout]    --> src/transport/lin.rs:154:37
[INFO] [stdout]     |
[INFO] [stdout] 154 |     pub fn read_response(&mut self, timeout_ms: u32) -> Result<Vec<u8>> {
[INFO] [stdout]     |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/transport/tests.rs:275:9
[INFO] [stdout]     |
[INFO] [stdout] 275 |     let mut mock = MockPhysical::new(Some(Box::new(|_frame: &Frame| {
[INFO] [stdout]     |         ----^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]    --> src/application/obdii.rs:296:5
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub struct Obd<T: TransportLayer> {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] 296 |     config: ObdConfig,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `handling_session_timing` is never read
[INFO] [stdout]    --> src/application/uds.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct Uds<T: TransportLayer> {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 138 |     handling_session_timing: bool, // Flag to prevent recursive session timing handling
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `handle_session_timing` is never used
[INFO] [stdout]    --> src/application/uds.rs:397:8
[INFO] [stdout]     |
[INFO] [stdout] 141 | impl<T: TransportLayer> Uds<T> {
[INFO] [stdout]     | ------------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 397 |     fn handle_session_timing(&mut self) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_REQUEST` is never used
[INFO] [stdout]  --> src/network/j1939.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const PGN_REQUEST: u32 = 0xEA00;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tail` is never read
[INFO] [stdout]   --> src/physical/can.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct RxQueue {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 81 |     tail: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `push` is never used
[INFO] [stdout]    --> src/physical/can.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl RxQueue {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tail` is never read
[INFO] [stdout]   --> src/physical/canfd.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct RxQueue {
[INFO] [stdout]    |        ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     tail: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `head` is never read
[INFO] [stdout]   --> src/physical/canfd.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct TxEventQueue {
[INFO] [stdout]    |        ------------ field in this struct
[INFO] [stdout] 71 |     events: Vec<TxEvent>,
[INFO] [stdout] 72 |     head: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TxEventQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `push` is never used
[INFO] [stdout]    --> src/physical/canfd.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl RxQueue {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pop` is never used
[INFO] [stdout]    --> src/physical/canfd.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl TxEventQueue {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 212 |     fn pop(&mut self) -> Option<TxEvent> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOIP_VEHICLE_IDENTIFICATION_REQUEST` is never used
[INFO] [stdout]   --> src/transport/doip.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DOIP_VEHICLE_IDENTIFICATION_REQUEST: u16 = 0x0001;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOIP_VEHICLE_IDENTIFICATION_RESPONSE` is never used
[INFO] [stdout]   --> src/transport/doip.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const DOIP_VEHICLE_IDENTIFICATION_RESPONSE: u16 = 0x0002;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `physical` is never read
[INFO] [stdout]    --> src/transport/doip.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct DoIP<P: PhysicalLayer> {
[INFO] [stdout]     |            ---- field in this struct
[INFO] [stdout] 111 |     config: DoIPConfig,
[INFO] [stdout] 112 |     physical: P,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ISOBUS_PROTOCOL_VERSION` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const ISOBUS_PROTOCOL_VERSION: u8 = 0x03;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_REQUEST` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const PGN_REQUEST: u32 = 0x00EA00;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_TRANSPORT_PROTOCOL_DATA` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const PGN_TRANSPORT_PROTOCOL_DATA: u32 = 0x00EB00;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_DIAGNOSTIC_MESSAGE` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const PGN_DIAGNOSTIC_MESSAGE: u32 = 0x00FECA;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_CTS` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const TP_CM_CTS: u8 = 0x11; // Clear to Send
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_EndOfMsgACK` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_BAM` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const TP_CM_BAM: u8 = 0x20; // Broadcast Announce Message
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_ABORT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const TP_CM_ABORT: u8 = 0xFF; // Connection Abort
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T1_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const T1_TIMEOUT: u32 = 750; // Time between CTS and first data packet
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T2_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const T2_TIMEOUT: u32 = 1250; // Time between consecutive data packets
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T3_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const T3_TIMEOUT: u32 = 1250; // Time between last data packet and EndOfMsgACK
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T4_TIMEOUT` is never used
[INFO] [stdout]   --> src/transport/isobus.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const T4_TIMEOUT: u32 = 1050; // Time waiting for CTS
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Idle`, `SendingData`, `WaitingForEndOfMsgACK`, and `ReceivingData` are never constructed
[INFO] [stdout]   --> src/transport/isobus.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | enum TPSessionState {
[INFO] [stdout]    |      -------------- variants in this enum
[INFO] [stdout] 74 |     Idle,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 75 |     WaitingForCTS,
[INFO] [stdout] 76 |     SendingData,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 77 |     WaitingForEndOfMsgACK,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     ReceivingData,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TPSessionState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/transport/isobus.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | struct TPSession {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 84 |     state: TPSessionState,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 85 |     total_size: u16,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 86 |     total_packets: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 87 |     next_packet: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 88 |     data: Vec<u8>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 89 |     source_address: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 90 |     destination_address: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     pgn: u32,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 92 |     last_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TPSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rx_buffer` is never read
[INFO] [stdout]    --> src/transport/isobus.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct ISOBUS {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 100 |     rx_buffer: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_transport_protocol`, `handle_tp_connection`, `handle_tp_data`, and `handle_diagnostic_message` are never used
[INFO] [stdout]    --> src/transport/isobus.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl ISOBUS {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn handle_transport_protocol(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn handle_tp_connection(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     fn handle_tp_data(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn handle_diagnostic_message(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGN_DM2` is never used
[INFO] [stdout]  --> src/transport/isobus_diagnostic.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const PGN_DM2: u32 = 0x00FECB; // DM2: Previously Active Diagnostic Trouble Codes
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lamp_status` is never read
[INFO] [stdout]   --> src/transport/isobus_diagnostic.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DiagnosticTroubleCode {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     lamp_status: LampStatus, // Status of the Malfunction Indicator Lamp
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiagnosticTroubleCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const SF_PCI: u8 = 0x00; // Single Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const FF_PCI: u8 = 0x10; // First Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CF_PCI` is never used
[INFO] [stdout]  --> src/transport/isotp.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CF_PCI: u8 = 0x20; // Consecutive Frame
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FC_PCI` is never used
[INFO] [stdout]   --> src/transport/isotp.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const FC_PCI: u8 = 0x30; // Flow Control
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Break`, `Sync`, `Id`, `Data`, and `Checksum` are never constructed
[INFO] [stdout]   --> src/transport/lin.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | enum LinState {
[INFO] [stdout]    |      -------- variants in this enum
[INFO] [stdout] 23 |     Idle,
[INFO] [stdout] 24 |     Break,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 25 |     Sync,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Id,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 27 |     Data,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 28 |     Checksum,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LinState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state` is never read
[INFO] [stdout]   --> src/transport/lin.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub struct Lin<P: PhysicalLayer> {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     state: LinState,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stdout]   --> src/transport/isobus.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 22 - const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout] 22 + const TP_CM_END_OF_MSG_ACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant in pattern `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stdout]    --> src/transport/isobus.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |             TP_CM_EndOfMsgACK => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TP_CM_END_OF_MSG_ACK`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.44s
[INFO] running `Command { std: "docker" "inspect" "3fbca38d3094c13fe92f471872cd9e616972c87a4569bc34e79b17ae9e81e4fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3fbca38d3094c13fe92f471872cd9e616972c87a4569bc34e79b17ae9e81e4fe", kill_on_drop: false }`
[INFO] [stdout] 3fbca38d3094c13fe92f471872cd9e616972c87a4569bc34e79b17ae9e81e4fe
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 178fb1108122ae3ddf27ac0d3fd265141a897d2ebe870d245665fd5599d3ad43
[INFO] running `Command { std: "docker" "start" "-a" "178fb1108122ae3ddf27ac0d3fd265141a897d2ebe870d245665fd5599d3ad43", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `AutomotiveError`
[INFO] [stderr]   --> src/physical/mod.rs:41:20
[INFO] [stderr]    |
[INFO] [stderr] 41 | use crate::error::{AutomotiveError, Result};
[INFO] [stderr]    |                    ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SocketAddr`
[INFO] [stderr]  --> src/transport/doip.rs:2:16
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::net::{SocketAddr, TcpStream};
[INFO] [stderr]   |                ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Duration`
[INFO] [stderr]  --> src/transport/isobus_diagnostic.rs:2:17
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stderr]   |                 ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/transport/lin.rs:263:5
[INFO] [stderr]     |
[INFO] [stderr] 263 |     (!sum as u8)
[INFO] [stderr]     |     ^          ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 263 -     (!sum as u8)
[INFO] [stderr] 263 +     !sum as u8 
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/transport/lin.rs:274:5
[INFO] [stderr]     |
[INFO] [stderr] 274 |     (!sum as u8)
[INFO] [stderr]     |     ^          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 274 -     (!sum as u8)
[INFO] [stderr] 274 +     !sum as u8 
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `config`
[INFO] [stderr]    --> src/application/uds.rs:427:12
[INFO] [stderr]     |
[INFO] [stderr] 427 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stderr]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `config`
[INFO] [stderr]    --> src/transport/doip.rs:179:12
[INFO] [stderr]     |
[INFO] [stderr] 179 |     fn new(config: Self::Config) -> Result<Self> {
[INFO] [stderr]     |            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/transport/doip.rs:212:21
[INFO] [stderr]     |
[INFO] [stderr] 212 |         if let Some(mut stream) = self.stream.take() {
[INFO] [stderr]     |                     ----^^^^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/transport/isobus.rs:110:13
[INFO] [stderr]     |
[INFO] [stderr] 110 |         let mut frame = Frame {
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/transport/isobus.rs:171:21
[INFO] [stderr]     |
[INFO] [stderr] 171 |                 let mut cts_frame = Frame {
[INFO] [stderr]     |                     ----^^^^^^^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/transport/isobus.rs:222:25
[INFO] [stderr]     |
[INFO] [stderr] 222 |                     let mut ack_frame = Frame {
[INFO] [stderr]     |                         ----^^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/transport/isobus.rs:334:17
[INFO] [stderr]     |
[INFO] [stderr] 334 |             let mut rts_frame = Frame {
[INFO] [stderr]     |                 ----^^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `timeout_ms`
[INFO] [stderr]    --> src/transport/lin.rs:154:37
[INFO] [stderr]     |
[INFO] [stderr] 154 |     pub fn read_response(&mut self, timeout_ms: u32) -> Result<Vec<u8>> {
[INFO] [stderr]     |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stderr] 
[INFO] [stderr] warning: field `config` is never read
[INFO] [stderr]    --> src/application/obdii.rs:296:5
[INFO] [stderr]     |
[INFO] [stderr] 295 | pub struct Obd<T: TransportLayer> {
[INFO] [stderr]     |            --- field in this struct
[INFO] [stderr] 296 |     config: ObdConfig,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `handling_session_timing` is never read
[INFO] [stderr]    --> src/application/uds.rs:138:5
[INFO] [stderr]     |
[INFO] [stderr] 133 | pub struct Uds<T: TransportLayer> {
[INFO] [stderr]     |            --- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 138 |     handling_session_timing: bool, // Flag to prevent recursive session timing handling
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `handle_session_timing` is never used
[INFO] [stderr]    --> src/application/uds.rs:397:8
[INFO] [stderr]     |
[INFO] [stderr] 141 | impl<T: TransportLayer> Uds<T> {
[INFO] [stderr]     | ------------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 397 |     fn handle_session_timing(&mut self) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PGN_REQUEST` is never used
[INFO] [stderr]  --> src/network/j1939.rs:7:7
[INFO] [stderr]   |
[INFO] [stderr] 7 | const PGN_REQUEST: u32 = 0xEA00;
[INFO] [stderr]   |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `tail` is never read
[INFO] [stderr]   --> src/physical/can.rs:81:5
[INFO] [stderr]    |
[INFO] [stderr] 78 | struct RxQueue {
[INFO] [stderr]    |        ------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 81 |     tail: usize,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `push` is never used
[INFO] [stderr]    --> src/physical/can.rs:132:8
[INFO] [stderr]     |
[INFO] [stderr] 122 | impl RxQueue {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 132 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `tail` is never read
[INFO] [stderr]   --> src/physical/canfd.rs:65:5
[INFO] [stderr]    |
[INFO] [stderr] 62 | struct RxQueue {
[INFO] [stderr]    |        ------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 65 |     tail: usize,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RxQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `head` is never read
[INFO] [stderr]   --> src/physical/canfd.rs:72:5
[INFO] [stderr]    |
[INFO] [stderr] 70 | struct TxEventQueue {
[INFO] [stderr]    |        ------------ field in this struct
[INFO] [stderr] 71 |     events: Vec<TxEvent>,
[INFO] [stderr] 72 |     head: usize,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TxEventQueue` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `push` is never used
[INFO] [stderr]    --> src/physical/canfd.rs:162:8
[INFO] [stderr]     |
[INFO] [stderr] 152 | impl RxQueue {
[INFO] [stderr]     | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 162 |     fn push(&mut self, frame: Frame) -> Result<()> {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `pop` is never used
[INFO] [stderr]    --> src/physical/canfd.rs:212:8
[INFO] [stderr]     |
[INFO] [stderr] 189 | impl TxEventQueue {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 212 |     fn pop(&mut self) -> Option<TxEvent> {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DOIP_VEHICLE_IDENTIFICATION_REQUEST` is never used
[INFO] [stderr]   --> src/transport/doip.rs:14:7
[INFO] [stderr]    |
[INFO] [stderr] 14 | const DOIP_VEHICLE_IDENTIFICATION_REQUEST: u16 = 0x0001;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DOIP_VEHICLE_IDENTIFICATION_RESPONSE` is never used
[INFO] [stderr]   --> src/transport/doip.rs:15:7
[INFO] [stderr]    |
[INFO] [stderr] 15 | const DOIP_VEHICLE_IDENTIFICATION_RESPONSE: u16 = 0x0002;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `physical` is never read
[INFO] [stderr]    --> src/transport/doip.rs:112:5
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub struct DoIP<P: PhysicalLayer> {
[INFO] [stderr]     |            ---- field in this struct
[INFO] [stderr] 111 |     config: DoIPConfig,
[INFO] [stderr] 112 |     physical: P,
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ISOBUS_PROTOCOL_VERSION` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:10:7
[INFO] [stderr]    |
[INFO] [stderr] 10 | const ISOBUS_PROTOCOL_VERSION: u8 = 0x03;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PGN_REQUEST` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:14:7
[INFO] [stderr]    |
[INFO] [stderr] 14 | const PGN_REQUEST: u32 = 0x00EA00;
[INFO] [stderr]    |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PGN_TRANSPORT_PROTOCOL_DATA` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:16:7
[INFO] [stderr]    |
[INFO] [stderr] 16 | const PGN_TRANSPORT_PROTOCOL_DATA: u32 = 0x00EB00;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PGN_DIAGNOSTIC_MESSAGE` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:17:7
[INFO] [stderr]    |
[INFO] [stderr] 17 | const PGN_DIAGNOSTIC_MESSAGE: u32 = 0x00FECA;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TP_CM_CTS` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:21:7
[INFO] [stderr]    |
[INFO] [stderr] 21 | const TP_CM_CTS: u8 = 0x11; // Clear to Send
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TP_CM_EndOfMsgACK` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:22:7
[INFO] [stderr]    |
[INFO] [stderr] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TP_CM_BAM` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:23:7
[INFO] [stderr]    |
[INFO] [stderr] 23 | const TP_CM_BAM: u8 = 0x20; // Broadcast Announce Message
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TP_CM_ABORT` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:24:7
[INFO] [stderr]    |
[INFO] [stderr] 24 | const TP_CM_ABORT: u8 = 0xFF; // Connection Abort
[INFO] [stderr]    |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T1_TIMEOUT` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:27:7
[INFO] [stderr]    |
[INFO] [stderr] 27 | const T1_TIMEOUT: u32 = 750; // Time between CTS and first data packet
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T2_TIMEOUT` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:28:7
[INFO] [stderr]    |
[INFO] [stderr] 28 | const T2_TIMEOUT: u32 = 1250; // Time between consecutive data packets
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T3_TIMEOUT` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:29:7
[INFO] [stderr]    |
[INFO] [stderr] 29 | const T3_TIMEOUT: u32 = 1250; // Time between last data packet and EndOfMsgACK
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T4_TIMEOUT` is never used
[INFO] [stderr]   --> src/transport/isobus.rs:30:7
[INFO] [stderr]    |
[INFO] [stderr] 30 | const T4_TIMEOUT: u32 = 1050; // Time waiting for CTS
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Idle`, `SendingData`, `WaitingForEndOfMsgACK`, and `ReceivingData` are never constructed
[INFO] [stderr]   --> src/transport/isobus.rs:74:5
[INFO] [stderr]    |
[INFO] [stderr] 73 | enum TPSessionState {
[INFO] [stderr]    |      -------------- variants in this enum
[INFO] [stderr] 74 |     Idle,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 75 |     WaitingForCTS,
[INFO] [stderr] 76 |     SendingData,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 77 |     WaitingForEndOfMsgACK,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 78 |     ReceivingData,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TPSessionState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/transport/isobus.rs:84:5
[INFO] [stderr]    |
[INFO] [stderr] 83 | struct TPSession {
[INFO] [stderr]    |        --------- fields in this struct
[INFO] [stderr] 84 |     state: TPSessionState,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 85 |     total_size: u16,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 86 |     total_packets: u8,
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 87 |     next_packet: u8,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 88 |     data: Vec<u8>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 89 |     source_address: u8,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 90 |     destination_address: u8,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 91 |     pgn: u32,
[INFO] [stderr]    |     ^^^
[INFO] [stderr] 92 |     last_timestamp: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TPSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `rx_buffer` is never read
[INFO] [stderr]    --> src/transport/isobus.rs:100:5
[INFO] [stderr]     |
[INFO] [stderr]  95 | pub struct ISOBUS {
[INFO] [stderr]     |            ------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 100 |     rx_buffer: Vec<u8>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `handle_transport_protocol`, `handle_tp_connection`, `handle_tp_data`, and `handle_diagnostic_message` are never used
[INFO] [stderr]    --> src/transport/isobus.rs:127:8
[INFO] [stderr]     |
[INFO] [stderr] 104 | impl ISOBUS {
[INFO] [stderr]     | ----------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 127 |     fn handle_transport_protocol(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 144 |     fn handle_tp_connection(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 209 |     fn handle_tp_data(&mut self, source_address: u8, data: &[u8]) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 249 |     fn handle_diagnostic_message(&mut self, frame: &Frame) -> Result<()> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PGN_DM2` is never used
[INFO] [stderr]  --> src/transport/isobus_diagnostic.rs:9:7
[INFO] [stderr]   |
[INFO] [stderr] 9 | const PGN_DM2: u32 = 0x00FECB; // DM2: Previously Active Diagnostic Trouble Codes
[INFO] [stderr]   |       ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `lamp_status` is never read
[INFO] [stderr]   --> src/transport/isobus_diagnostic.rs:33:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct DiagnosticTroubleCode {
[INFO] [stderr]    |            --------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 33 |     lamp_status: LampStatus, // Status of the Malfunction Indicator Lamp
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DiagnosticTroubleCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SF_PCI` is never used
[INFO] [stderr]  --> src/transport/isotp.rs:7:7
[INFO] [stderr]   |
[INFO] [stderr] 7 | const SF_PCI: u8 = 0x00; // Single Frame
[INFO] [stderr]   |       ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `FF_PCI` is never used
[INFO] [stderr]  --> src/transport/isotp.rs:8:7
[INFO] [stderr]   |
[INFO] [stderr] 8 | const FF_PCI: u8 = 0x10; // First Frame
[INFO] [stderr]   |       ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CF_PCI` is never used
[INFO] [stderr]  --> src/transport/isotp.rs:9:7
[INFO] [stderr]   |
[INFO] [stderr] 9 | const CF_PCI: u8 = 0x20; // Consecutive Frame
[INFO] [stderr]   |       ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `FC_PCI` is never used
[INFO] [stderr]   --> src/transport/isotp.rs:10:7
[INFO] [stderr]    |
[INFO] [stderr] 10 | const FC_PCI: u8 = 0x30; // Flow Control
[INFO] [stderr]    |       ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Break`, `Sync`, `Id`, `Data`, and `Checksum` are never constructed
[INFO] [stderr]   --> src/transport/lin.rs:24:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | enum LinState {
[INFO] [stderr]    |      -------- variants in this enum
[INFO] [stderr] 23 |     Idle,
[INFO] [stderr] 24 |     Break,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 25 |     Sync,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 26 |     Id,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 27 |     Data,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 28 |     Checksum,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `LinState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `state` is never read
[INFO] [stderr]   --> src/transport/lin.rs:65:5
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub struct Lin<P: PhysicalLayer> {
[INFO] [stderr]    |            --- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 65 |     state: LinState,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stderr]   --> src/transport/isobus.rs:22:7
[INFO] [stderr]    |
[INFO] [stderr] 22 | const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 22 - const TP_CM_EndOfMsgACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stderr] 22 + const TP_CM_END_OF_MSG_ACK: u8 = 0x13; // End of Message Acknowledgment
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: constant in pattern `TP_CM_EndOfMsgACK` should have an upper case name
[INFO] [stderr]    --> src/transport/isobus.rs:197:13
[INFO] [stderr]     |
[INFO] [stderr] 197 |             TP_CM_EndOfMsgACK => {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TP_CM_END_OF_MSG_ACK`
[INFO] [stderr] 
[INFO] [stderr] warning: `libautomotive` (lib) generated 52 warnings (run `cargo fix --lib -p libautomotive` to apply 14 suggestions)
[INFO] [stderr] warning: unused imports: `AtomicU32` and `Ordering`
[INFO] [stderr]  --> src/transport/tests.rs:6:25
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::sync::atomic::{AtomicU32, Ordering};
[INFO] [stderr]   |                         ^^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]  --> src/transport/tests.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::sync::Arc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/transport/tests.rs:275:9
[INFO] [stderr]     |
[INFO] [stderr] 275 |     let mut mock = MockPhysical::new(Some(Box::new(|_frame: &Frame| {
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: `libautomotive` (lib test) generated 55 warnings (52 duplicates) (run `cargo fix --lib -p libautomotive --tests` to apply 3 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/libautomotive-c669f490ae374ca2)
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test application::tests::obd_tests::test_obd_freeze_frame ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_memory_access ... ok
[INFO] [stdout] test application::tests::obd_tests::test_obd_read_sensor ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_read_data ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_response_pending ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_routine_control ... ok
[INFO] [stdout] test application::tests::obd_tests::test_obd_read_dtc ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_tester_present ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_io_control ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_write_data ... ok
[INFO] [stdout] test transport::tests::test_isotp_extended_addressing ... ok
[INFO] [stdout] test transport::tests::test_isotp_invalid_response ... ok
[INFO] [stdout] test transport::tests::test_isotp_mixed_addressing ... ok
[INFO] [stdout] test transport::tests::test_isotp_padding ... ok
[INFO] [stdout] test transport::tests::test_isotp_single_frame ... ok
[INFO] [stdout] test tests::version_is_valid ... ok
[INFO] [stdout] test transport::tests::test_isotp_error_handling ... ok
[INFO] [stdout] test application::tests::obd_tests::test_obd_error_handling ... ok
[INFO] [stdout] test transport::tests::test_isotp_flow_control ... ok
[INFO] [stdout] test transport::tests::test_isotp_multi_frame ... ok
[INFO] [stdout] test transport::tests::test_isotp_timeouts ... ok
[INFO] [stdout] test application::tests::uds_tests::test_uds_session_timeout ... ok
[INFO] [stderr]      Running tests/integration_tests.rs (/opt/rustwide/target/debug/deps/integration_tests-7b6cffa47cf4ed3d)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests libautomotive
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/transport/lin.rs:263:5
[INFO] [stderr]     |
[INFO] [stderr] 263 |     (!sum as u8)
[INFO] [stderr]     |     ^          ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 263 -     (!sum as u8)
[INFO] [stderr] 263 +     !sum as u8 
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/transport/lin.rs:274:5
[INFO] [stderr]     |
[INFO] [stderr] 274 |     (!sum as u8)
[INFO] [stderr]     |     ^          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 274 -     (!sum as u8)
[INFO] [stderr] 274 +     !sum as u8 
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: 2 warnings emitted
[INFO] [stderr] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "178fb1108122ae3ddf27ac0d3fd265141a897d2ebe870d245665fd5599d3ad43", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "178fb1108122ae3ddf27ac0d3fd265141a897d2ebe870d245665fd5599d3ad43", kill_on_drop: false }`
[INFO] [stdout] 178fb1108122ae3ddf27ac0d3fd265141a897d2ebe870d245665fd5599d3ad43
